Space-time block decoder for a wireless communications system

ABSTRACT

A wireless communications system including an antenna configured to receive a sequence of symbols through a channel, in which the sequence of symbols comprise bits of user data that have been previously mapped to the sequence of symbols. The wireless communications system further includes a demodulator configured to generate a sequence of demodulated symbols by multiplying the sequence of symbols by a conjugate of a channel response of the channel; a demultiplexer configured to generate an in-phase component and a quadrature component of each demodulated symbol in the sequence of demodulated symbols; a slicer configured to, for each demodulated symbol, generate a decoded symbol by performing a hard decision based on the in-phase component and the quadrature component of the demodulated symbol; and a bit mapping module configured to determine the bits of user data associated with each decoded symbol.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application No. 12/151,532, filed May 7, 2008, which is a continuation of U.S. patent application No. 10/667,632 (now U.S. Pat. No. 7,372,919), filed Sep. 22, 2003, which claims the benefit of U.S. Provisional Application No. 60/461,970, filed on Apr. 10, 2003. The disclosures of the above applications are incorporated herein by reference in their entirety.

FIELD OF THE INVENTION

The present invention relates to wireless communications systems, and more particularly to space-time decoders for wireless communications systems that have multiple transmit antennae.

BACKGROUND OF THE INVENTION

Space-time coding is used in wireless communications systems that include multiple receive and/or transmit antennae. Space-time codes exploit the spatial diversity of wireless systems by taking advantage of multiple transmission paths between transmitters and receivers. Systems that implement space-time block coding transmit blocks that include a predetermined number of symbols. While space-time block coding may be used to increase the data rate of the communications system, space-time block codes are commonly used to add redundancy to wireless data transmissions and to increase the power of transmissions. This increases the reliability of wirelessly transmitted data and increases the range of the communications system.

For example, wireless access systems according to the IEEE 802.16a standard, which is hereby incorporated by reference in its entirety, enable the use of space-time block codes that utilize two transmit antennae. Additionally, there is interest in applying space-time block coding to next-generation wireless local area networks (WLANs).

Referring now to FIG. 1, a first wireless communications system 10 includes a symbol modulator 12. An input of the symbol modulator 12 receives user data. The symbol modulator 12 maps the user data to constellation points of a signal constellation and generates a symbol sequence c={c₀, c₁, c₂, . . . , c_(m-1)} comprising m symbols. The symbol modulator 12 outputs the symbol sequence c to an input of a space-time block encoder 14. The space-time block encoder 14 generates blocks that include one or more symbols, as will be described further below. The blocks are transmitted by first and second transmit antennae 16-1 and 16-2, respectively, during one or more symbol periods.

In one configuration, the space-time block encoder 14 implements a rate-1 orthogonal space-time block code. The rate R=k/p is the ratio of the number of symbols k in a block to the number of symbol periods p that are required to transmit the k symbols. For example, one space-time block encoder encodes two symbols per block according to

$G_{2} = \begin{bmatrix} x_{1} & x_{2} \\ {- x_{2}^{*}} & x_{1}^{*} \end{bmatrix}$ where x₁ and x₂ are first and second consecutive symbols, respectively, in the symbol sequence c. The first and second transmit antennae 16-1 and 16-2, respectively transmit x₁ and x₂ during two consecutive symbol periods. For example, during a first symbol period, the first transmit antenna 16-1 transmits c*₀ and the second transmit antenna 16-2 transmits c₁. During a second symbol period, the first antenna 16-1 transmits −c*₁ and the second antenna 16-2 transmits c*₀, where c*₀ and c*¹ are the complex conjugates of c₀ and c₁, respectively. The space-time block encoder 14 transmits complex conjugates of the symbols to add redundancy and to allow a receiver to reconstruct the signal in the event that a transmission path fades. Likewise, symbols c₂ and c₃ are transmitted during two successive symbol periods.

Receive antenna 18 receives a first signal transmission through h₁₁, illustrated at 20-1, and a second signal transmission through h₂₁, illustrated at 20-2, where h_(ij) is the channel state information between transmit antenna i and receive antenna j during a symbol period. During symbol period 2n, where n=0, 1, 2, . . . , S-1, receive antenna 18 receives symbol r_(2n), which is expressed as r_(2n)=h₁₁c_(2n)+h₂₁c_(2n+1)+n_(2n). During symbol period (2n+1), receive antenna 18 receives symbol r_(2n+1), which is expressed as r_(2n+1)=−h₁₁c*_(2n+1)+h₂₁c*_(2n)+n_(2n+1). In the equations for r_(2n) and r_(2n+1), n_(2n)and n_(2n+1), respectively, denote additive white Gaussian noise. This assumes that 2S symbols are transmitted during 2S symbol periods. Expressed in matrices, receive antenna 18 receives symbol sequence r during two consecutive symbol periods, where

$r = {\begin{bmatrix} r_{2n} \\ r_{{2n} + 1}^{*} \end{bmatrix} = {{{\begin{bmatrix} h_{11} & h_{21} \\ h_{21}^{*} & {- h_{11}^{*}} \end{bmatrix}\begin{bmatrix} c_{2n} \\ c_{{2n} + 1} \end{bmatrix}} + \begin{bmatrix} n_{2n} \\ n_{{2n} + 1}^{*} \end{bmatrix}} = {{H \cdot c} + {n.}}}}$ An input of a space-time block decoder 22 receives received symbol sequence r, and the space-time block decoder 22 outputs user data bits {circumflex over (b)}={{circumflex over (b)}₀,{circumflex over (b)}₁,{circumflex over (b)}₂, . . . ,{circumflex over (b)}_(m−1)} based on r.

Referring now to FIG. 2, in one approach, the space-time block decoder 22 includes a maximum likelihood (ML) detector 24 and a bit mapping module 26. The ML detector 24 makes a symbol decision based on a continuous stream of quantized encoded symbols. The ML detector 24 utilizes squared Euclidean distances as ML decision metrics to decode the received symbols. When there is one receive antenna, equivalent and independent decision metrics for c_(2n) and c_(2n+1) are derived. For example, decision metric |r_(2n)−h₁₁c_(2n)−h₂₁c_(2n+1)|²+|r_(2n+1)+h₁₁c*_(2n+1)−h₂₁c*_(2n)|² is derived by squaring the additive white Gaussian noise of r_(2n) and r_(2n+1) and summing the two values. After deleting terms that are independent of the codewords and rearranging the equation, the decision metric for c_(2n) is |(h*₁₁r_(2n)+h₂₁r*_(2n+1))−c_(2n)|²+(−1+|h₁₁|²+|h₂₁|²)|c_(2n)|². The bit mapping module 26 maps constellation points that are output by the ML detector 24 to user data bits. However, the independent decision metrics for c_(2n) and c_(2n+1) require complex computations. For example, the decision metric for c_(2n) includes complex conjugate multiplication and squaring operations. These complex computations make the implementation of the ML detector 24 very complicated.

SUMMARY OF THE INVENTION

A space-time block decoder for a wireless communications system includes a demodulator that generates a demodulated symbol sequence by derotating a signal constellation of a received symbol sequence. A dimension demultiplexer that communicates with the demodulator generates in-phase and quadrature components of the demodulated symbol sequence. A one-dimensional dynamic slicer that communicates with the dimension demultiplexer generates constellation points in the signal constellation based on the in-phase and quadrature components.

In other features, the space-time block decoder individually decodes symbols in the received symbol sequence as a receiver that communicates with the space-time block decoder receives the received symbol sequence. The demodulator derotates the signal constellation by multiplying the received symbol sequence and a conjugate of a channel response of the wireless communications system. The one-dimensional dynamic slicer generates the constellation points by comparing the in-phase and quadrature components to integer multiples of a magnitude square of the channel response. A receiver that communicates with the space-time block decoder includes one receive antenna and a transmitter that communicates with the receiver includes two transmit antennae. The receive antenna receives two symbols during first and second consecutive symbol periods.

In still other features, a receiver that communicates with the space-time block decoder includes at least two receive antennae and a transmitter that communicates with the receiver includes two transmit antennae. A receiver that communicates with the space-time block decoder includes at least two receive antennae and a transmitter that communicates with the receiver includes at least two transmit antennae.

In still other features, at least one symbol in the received symbol sequence is encoded with an orthogonal space-time code. The signal constellation is generated by one of a bi-phase shift keying (BPSK) code, a quadrature phase shift keying (QPSK) code, a 16-quadrature amplitude modulation (QAM) code, a 64-QAM code, and a 256-QAM code.

In yet other features, the space-time block decoder is implemented in a wireless metropolitan area network (WMAN). The space-time block decoder is implemented in a wireless local area network (WLAN). The space-time block decoder scales the in-phase and quadrature components to implement a normalized power scale that is based on the signal constellation. The constellation points are Gray coded. A bit mapping module that communicates with the one-dimensional dynamic slicer maps the constellation points to user data bits.

Further areas of applicability of the present invention will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating the preferred embodiment of the invention, are intended for purposes of illustration only and are not intended to limit the scope of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will become more fully understood from the detailed description and the accompanying drawings, wherein:

FIG. 1 is a block diagram of a wireless communications system that implements space-time block coding with two transmit antennae and one receive antenna according to the prior art;

FIG. 2 is a block diagram of a space-time block decoder that includes a maximum likelihood detector according to the prior art;

FIG. 3 is a block diagram of a space-time block decoder that includes a one-dimensional dynamic slicer according to the present invention;

FIG. 4 is a flowchart illustrating steps performed by the space-time block decoder of FIG. 3;

FIG. 5 is a block diagram of a wireless communications system that implements space-time block coding with two transmit antennae and at least two receive antennae;

FIG. 6 is a block diagram of a wireless communications system that implements space-time block coding with at least two transmit antennae and at least two receive antennae.

FIG. 7 illustrates decision regions from which the one-dimensional dynamic slicer generates a hard symbol decision;

FIG. 8A illustrates constellation points in a BPSK signal constellation according to the IEEE 802.11a standard;

FIG. 8B illustrates complex constellation points in a QPSK signal constellation according to the IEEE 802.11a standard;

FIG. 8C illustrates complex constellation points in a 16-QAM signal constellation according to the IEEE 802.11a standard;

FIG. 8D illustrates complex constellation points in a 64-QAM signal constellation according to the IEEE 802.11a standard;

FIG. 9 further illustrates the space-time block encoder of FIG. 3 including an exemplary one-dimensional dynamic slicer; and

FIG. 10 is a flowchart illustrating steps performed by the exemplary one-dimensional dynamic slicer of FIG. 6.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiment(s) is merely exemplary in nature and is in no way intended to limit the invention, its application, or uses. For purposes of clarity, the same reference numbers will be used in the drawings to identify similar elements.

When a channel response H is orthogonal, a received symbol sequence r may be demodulated by determining the product of r and a conjugate of the channel response H*. The resulting demodulated symbol sequence includes demodulated symbols z₁ and z_(2,) which may be expressed as

$\begin{bmatrix} z_{1} \\ z_{2} \end{bmatrix} = {{H*r} = {\begin{bmatrix} {{h_{11}^{*}r_{2n}} + {h_{21}r_{{2n} + 1}^{*}}} \\ {{h_{21}^{*}r_{2n}} - {h_{11}r_{{2n} + 1}^{*}}} \end{bmatrix} = {{\left( {{h_{11}}^{2} + {h_{21}}^{2}} \right)\begin{bmatrix} c_{2n} \\ c_{{2n} + 1} \end{bmatrix}} + {\begin{bmatrix} {{h_{11}^{*}n_{2n}} + {h_{21}n_{{2n} + 1}^{*}}} \\ {{h_{21}^{*}n_{2n}} - {h_{11}n_{{2n} + 1}^{*}}} \end{bmatrix}.}}}}$ A resultant noise vector is uncorrelated with a noise autocorrelation matrix

${R_{\overset{\_}{n}\overset{\_}{n}} = {\left( {{h_{11}}^{2} + {h_{21}}^{2}} \right)\sigma^{2}I}},$ where σ² is the noise variance of the original noise and I is a 2×2 identity matrix. Since symbols c_(2n) and c_(2n+1) have independent decision metrics, c_(2n) and c_(2n+1) may be determined independently. Additionally, there is no concatenated outer code such as a convolutional code or a trellis coded modulation (TCM) code that imposes a symbol sequencing order. Therefore, unlike a decoder including an ML detector, decoding can be done on a symbol-by-symbol basis, and a slicer can make a hard symbol decision without a loss in decoder performance.

Referring now to FIG. 3, a space-time block decoder 32 according to the present invention includes a demodulator 34, a I-Q demultiplexer 36, a one-dimensional dynamic slicer 38, and a bit mapping module 40. The demodulator 34 multiplies the received symbol sequence r by a conjugate of the channel response H*. This derotates a signal constellation of the received symbol sequence r and results in a scaling factor that is multiplied by symbols c_(2n) and c_(2n+1). The result is a demodulated symbol sequence z that is decoupled, which allows for decoding on a symbol-by-symbol basis.

The demodulator 34 outputs demodulated symbol sequence z to the I-Q demultiplexer 36. The I-Q demultiplexer 36 selects a demodulated symbol z_(i) in the demodulated symbol sequence z and outputs one of an in-phase and quadrature component of the demodulated symbol z_(i). For example,

{z_(i)} is the in-phase component of demodulated symbol z_(i), and

{z_(i)} is the quadrature component of demodulated symbol z_(i). The I-Q demultiplexer 36 independently outputs the in-phase and quadrature components of demodulated symbol z_(i) to the one-dimensional dynamic slicer 38. For example, the one-dimensional dynamic slicer 38 separately processes

{z₁} and

{z₁} to generate constellation points in an implemented signal constellation. The one-dimensional dynamic slicer 38 makes a hard symbol decision by comparing

{z₁} and

{z₁} to integer multiples of |H|² in decision boundaries. The decision boundaries are established by the current signal constellation. While a single one-dimensional dynamic slicer is shown in FIG. 4, an additional one-dimensional dynamic slicer may be implemented to simultaneously process

{z₁} and

{z₁} in a parallel structure. This method applies to all orthogonal space-time block codes. The bit mapping module 40 receives constellation points from the one-dimensional dynamic slicer and maps the constellation points to user data bits {circumflex over (b)}.

Referring now to FIG. 4, a decoding algorithm that is implemented in the space-time block decoder 32 begins in step 46. In step 48, control determines whether a signal was received. If false, control loops to step 48. If true, control proceeds to step 50. In step 50, the demodulator 34 demodulates the received signal. In step 51, the I-Q demultiplexer selects a demodulated symbol from a demodulated symbol sequence. In step 54, the I-Q demultiplexer 36 outputs the in-phase component of the demodulated symbol and the one-dimensional dynamic slicer 38 determines the in-phase component of the constellation point that is associated with the demodulated symbol. In step 56, the I-Q demultiplexer 36 outputs the quadrature component of the demodulated symbol and the one-dimensional dynamic slicer 38 determines the quadrature component of the constellation point that is associated with the demodulated symbol. Steps 54 and 56 can be performed in parallel. In step 57, the bit mapping module 40 maps the constellation point that is generated by the one-dimensional dynamic slicer 38 to user data bits. In step 58, control determines whether there is another symbol to decode in the demodulated symbol sequence. If true, control returns to step 51. If false, control returns to step 48.

Referring now to FIG. 5, a second wireless communications system 66 includes the first and second transmit antennae 16-1 and 16-2, respectively, and M receive antennae 68, where M is greater than or equal to two. In the case of multiple receive antennae, the demodulated symbol sequence expression is altered. The result is a modified scaling factor multiplied by the decoded symbols. With M receive antennae,

${\begin{bmatrix} {\overset{\Cap}{z}}_{1} \\ {\overset{\Cap}{z}}_{2} \end{bmatrix} = {{\sum\limits_{j = 1}^{M}\;{H_{j}^{*}r_{j}}} = {{\left( {\sum\limits_{j = 1}^{M}\;{\sum\limits_{i = 1}^{2}\;{h_{ij}}^{2}}} \right)\begin{bmatrix} c_{2n} \\ c_{{2n} + 1} \end{bmatrix}} + \begin{bmatrix} {\sum\limits_{j = 1}^{M}{\overset{\Cap}{n}}_{{2n},j}} \\ {\sum\limits_{j = 1}^{M}{\overset{\Cap}{n}}_{{{2n} + 1},j}} \end{bmatrix}}}},$ where r_(j) expresses the symbols received at receive antenna j during symbol periods 2n and (2n+1) and where

$H_{j} = {\begin{bmatrix} h_{1j} & h_{2j} \\ h_{2j}^{*} & {- h_{1j}^{*}} \end{bmatrix}.}$ Symbols c_(2n) and c_(2n+1) are decoupled, and in-phase and quadrature components of the demodulated symbol sequence may be independently processed by the one-dimensional dynamic slicer 38. Therefore, the one-dimensional dynamic slicer 38 determines decoded symbols ĉ_(2n) and ĉ_(2n+1), and the bit mapping module 40 determines the user data bits that are associated with decoded symbols ĉ_(2n) and ĉ_(2n+1). In this case, the in-phase and quadrature components of the demodulated symbol sequence and the decision boundaries of the one-dimensional dynamic slicer 38 are integer multiples of

${H}^{2} = {\left( {\sum\limits_{j = 1}^{M}\;{\sum\limits_{i = 1}^{2}\;{h_{ij}}^{2}}} \right).}$

Referring now to FIG. 6, a third wireless communications system 70 includes at least two transmit antennae 72 and at least two receive antennae 68. Since all known space-time block codes are based on orthogonal code, the present invention is applicable to orthogonal codes other than

$G_{2} = {\begin{bmatrix} x_{1} & x_{2} \\ {- x_{2}^{*}} & x_{1}^{*} \end{bmatrix}.}$ Several orthogonal codes allow for more than two transmit antennae and multiple receive antennae. For example, rate-½ and rate-¾ block codes may be employed.

In the case of multiple transmit and multiple receive antennae, the demodulated symbol sequence expression is altered. A modified scaling factor is multiplied by the decoded symbols. With N transmit antennae and M receive antennae,

${{\overset{\Cap}{z}}_{i} = {{\left( {\sum\limits_{j = 1}^{M}\;{\sum\limits_{i = 1}^{N}\;{h_{ij}}^{2}}} \right)c_{i}} + {\overset{\Cap}{n}}_{i}}},$ where demodulated symbol z_(i) corresponds to transmitted symbol c_(i) (i=0, 1, 2, . . . , k−1). Therefore, symbol c_(i) may be independently decoded, and in-phase and quadrature components of symbol c_(i) may be independently processed by the one-dimensional dynamic slicer 38. The one-dimensional dynamic slicer 38 determines decoded symbol c_(i), and the bit mapping module 40 determines the user data bits that are associated with symbol c_(i). In this case, the in-phase and quadrature components of symbol c_(i) and the decision boundaries of the one-dimensional dynamic slicer 38 are integer multiples of

${H}^{2} = {\left( {\sum\limits_{j = 1}^{M}\;{\sum\limits_{i = 1}^{N}\;{h_{ij}}^{2}}} \right).}$ Since symbol c_(i) may not be transmitted over every time slot for space-time block codes with rate R<1,

is a sum of the demodulated symbols corresponding only to the time slots where c_(i) is transmitted.

Referring now to FIG. 7,

{z₁} and

{z₁} as well as decision boundaries 80-1 to 80-8 for the one-dimensional dynamic slicer 38 are integer multiples of |H|². Therefore, the one-dimensional dynamic slicer 38 compares

{z₁} and

{z₁} to integer multiples at the decision boundaries 80-1 to 80-8 to determine the in-phase or quadrature components of constellation points. For example, FIG. 7 illustrates a decision metric for constellations up to a 64-quadrature amplitude modulation (QAM) constellation. However, since FIG. 7 includes constellation points of ±1 to ±7, the decision metric also applies to quadrature phase shift keying (QPSK) and 16-QAM constellations. Additionally, FIG. 7 may be expanded to apply to a 256-QAM constellation. In the following dynamic slicer algorithms, c _(i) is a decoded in-phase or quadrature component of z _(i).

For QPSK, if ( z _(i)≧0), then c _(i)=1. Otherwise, c _(i)=−1.

For 16-QAM, if ((| z _(i)|−2|H|²)≦0), then c _(i)=±1. Otherwise, c _(i)=±3. The sign of c _(i) is dependant on the sign of z _(i).

For 64-QAM, if ((| z _(i)|−2|H|²)≦0), then c _(i)=±1. If ((| z _(i)|−4|H|²)≦0), then c _(i)=±3. If ((| z _(i)|−6|H|²)≦0), then c _(i)=±5. Otherwise, c _(i)=±7. As in 16-QAM, the sign of c _(i) is dependant on the sign of z _(i).

FIGS. 8A-8D illustrate constellation points in different signal constellations according to the IEEE 802.11 a standard. In FIG. 8A, a bi-phase shift keying (BPSK) constellation includes constellation points of either 0 or 1. Therefore, a single decision boundary exists at 0 and the constellation points are one-dimensional. In FIG. 8B, a QPSK constellation includes four constellation points that comprise two bits each. The two bits include one in-phase bit and one quadrature bit. A single decision boundary exists at 0. In FIG. 8C, a 16-QAM constellation includes sixteen constellation points that comprise four bits each. The four bits include two in-phase bits and two quadrature bits. Since more than two constellation points exist on either side of 0, multiple decision boundaries exist. In FIG. 8D, a 64-QAM constellation includes 64 constellation points that comprise six bits each. The six bits include three in-phase bits and three quadrature bits. As in a 16-QAM constellation, multiple decision boundaries exist. Those skilled in the art can appreciate that the space-time block decoder 32 of the present invention may decode symbols that are encoded by signal constellations other than those illustrated in FIGS. 8A-8D.

Additionally, FIGS. 8A-8D illustrate Gray coded constellation points according to the IEEE 802.11a standard. For example, in a QPSK constellation, gray coded bit 0 maps to a one-dimensional constellation point −1 and gray coded bit 1 maps to a one-dimensional constellation point 1. In a 16-QAM constellation, gray coded bits 00 map to a one-dimensional constellation point −3, bits 01 map to a one-dimensional constellation point −1, bits 11 map to a one-dimensional constellation point 1, and bits 10 map to a one-dimensional constellation point 3. However, those skilled in the art can appreciate that other coding algorithms including alternative Gray coding algorithms may be implemented.

Referring now to FIG. 9, at the demodulator 34, a received symbol sequence r_(j) is multiplied by a conjugate of a channel response estimate H*_(j) to generate a demodulated symbol sequence z, which is decoupled. A symbol selection signal 88 determines which symbol in the demodulated symbol sequence z is decoupled by the I-Q demultiplexer 36. The I-Q demultiplexer 36 separates the in-phase and quadrature components, illustrated at 90 and 92, respectively, of the selected symbol. A dimension selection signal 94 determines whether the one-dimensional dynamic slicer 38 processes the in-phase or quadrature component. For example, the one-dimensional dynamic slicer 38 may first processes the in-phase component of the symbol followed by the quadrature component of the symbol. The in-phase and/or quadrature components may be multiplied by a scale factor signal 96 with a value K_(mod) ⁻¹ to implement a normalized power scale, which depends on the current signal constellation.

The normalized value of z _(i), V₀, is passed on to stages 98-1, 98-2, 98-3, and 98-4 of an exemplary embodiment of the one-dimensional dynamic slicer 38. The one-dimensional dynamic slicer 38 illustrated in FIG. 9 includes four stages 98-1, 98-2, 98-3, and 98-4 and operates with signal constellations up to 256-QAM. Depending on the number of bits that represent a dimension of a constellation point in a signal constellation, some stages 98-1, 98-2, 98-3, and/or 98-4 may not be used. For example, a constellation point in a QPSK constellation is identified by two total bits and only uses the first stage 98-1. The in-phase bit and the quadrature bit are independently determined. A constellation point in a 16-QAM constellation is identified by four bits and uses the first two stages 98-1 and 98-2. A constellation point in a 64-QAM constellation utilizes three stages 98-1, 98-2, and 98-3 and includes six total bits. All four stages 98-1, 98-2, 98-3, and 98-4 are used for a one-dimensional constellation point in a 256-QAM constellation, which includes eight total bits. The output bits of the stages 98-1, 98-2, 98-3, and 98-4 are labeled s₀, s₁, s₂, and s₃, respectively. An input of the bit mapping module 40 receive the output bits. The bit mapping module 40 maps the output bits to user data bits {circumflex over (b)}.

At the first slicing stage 98-1, the variable V₀ takes on the value of a normalized z _(i). If V₀ greater than or equal to zero, s₀=1 and the value for s₀ determines the value for V₁ in the second stage 98-2. For example, if s₀ is equal to 1, then V₁=V₀. If So is equal to 0, then V₁=−V₀. Therefore, V₁ will always be positive at the second stage 98-2. Additional stages may be added to the one-dimensional dynamic slicer 38 of FIG. 9 to operate with constellations greater than 256-QAM. The values for variables f₂ and f₃ depend on the current signal constellation. For the one-dimensional dynamic slicer 38 in FIG. 9, f₂ is equal to 0.5 for a 16-QAM constellation, f₂ is equal to 1 and f₃ is equal to 0.5 for a 64-QAM constellation, and f₂ is equal to 2 and f₃ is equal to 1 for a 256-QAM constellation. The variable d is equal to |H|², which is a sum of the product of H_(j) and H*^(j) as illustrated at 99 in FIG. 9.

Referring now to FIG. 10, a slicing algorithm according to the one-dimensional dynamic slicer 38 of FIG. 6 for a 256-QAM constellation begins in step 106. In step 108, the one-dimensional dynamic slicer 38 reads V₀, f₂, f₃, and d. In step 110, control determines whether V₀ is greater than or equal to 0. If true, control proceeds to step 112. If false, control proceeds to step 114. In step 112, s₀ is set equal to 1, V₁ is set equal to V₀, and control proceeds to step 116. In step 114, s₀ is set equal to 0, V₁ is set equal to −V₀, and control proceeds to step 116. In step 116, control determines whether V₁ is less than or equal to 4f₂d. If true, control proceeds to step 118. If false, control proceeds to step 120. In step 118, s₁ is set equal to 1, V₂ is set equal to V₁, and control proceeds to step 122. In step 120, s₁ is set equal to 0, V₂ is set equal to 8f₂d −V₁, and control proceeds to step 122. In step 122, control determines whether V₂ is greater than 4f₃d. If true, control proceeds to step 124. If false, control proceeds to step 126. In step 124, s₂ is set equal to 1, V₃ is set equal to 8f₃d-V₂, and control proceeds to step 128. In step 126, s₂ is set equal to 0, V₃ is set equal to V₂, and control proceeds to step 128. In step 128, control determines whether V₃ is greater than 2d. If true, control proceeds to step 130. If false, control proceeds to step 132. In step 130, s₃ is set equal to 1 and control ends. In step 132, s₃ is set equal to 0 and control ends.

The space-time block decoder 32 of the present invention allows a hard symbol decision to be made as every block of symbols is received. The space-time block decoder 32 is ideal for systems including an orthogonal block code and without an outer code. The orthogonal block code allows individual decoding of symbols in a block, and avoiding an outer code eliminates imposed sequence structures. However, a decoder that makes hard decisions on a symbol-by-symbol basis may still be beneficial for systems that use an outer code. In the event that H=|H|e^(jθ), variations of the demodulation process may be implemented. Such variations include using the phase e^(-jθ) instead of H*. In this case, those skilled in the art can appreciate that the scaling factor is altered accordingly.

Those skilled in the art can now appreciate from the foregoing description that the broad teachings of the present invention can be implemented in a variety of forms. Therefore, while this invention has been described in connection with particular examples thereof, the true scope of the invention should not be so limited since other modifications will become apparent to the skilled practitioner upon a study of the drawings, specification, and the following claims. 

1. A wireless communications system comprising: an antenna configured to receive a sequence of symbols through a channel, wherein (i) the sequence of symbols comprise bits of user data, and (ii) the bits of user data are mapped to the sequence of symbols prior to being received by the antenna; a demodulator configured to generate a sequence of demodulated symbols by multiplying the sequence of symbols by a conjugate of a channel response of the channel; a demultiplexer configured to generate an in-phase component and a quadrature component of each of the demodulated symbols; a slicer configured to, for each respective one of the demodulated symbols, generate a decoded symbol by performing a hard decision based on the in-phase component and the quadrature component of the respective one of the demodulated symbols; and a bit mapping module configured to determine which of the bits of user data are associated with each of the decoded symbols.
 2. The wireless communications system of claim 1, wherein the antenna comprises a plurality of antennae configured to receive the sequence of symbols.
 3. The wireless communications system of claim 2, wherein the bits of user data received by the antenna are mapped based on quadrature phase shift keying.
 4. The wireless communications system of claim 2, wherein the bits of user data received by the antenna are mapped based on 16-quadrature amplitude modulation.
 5. The wireless communications system of claim 2, wherein the bits of user data received by the antenna are mapped based on 64-quadrature amplitude modulation.
 6. The wireless communications system of claim 2, wherein the bits of user data received by the antenna are mapped based on 256-quadrature amplitude modulation.
 7. The wireless communications system of claim 1, wherein, for each of the respective ones of the demodulated symbols, the hard decision is based on the channel response.
 8. The wireless communications system of claim 1, wherein, for each of the respective ones of the demodulated symbols, the hard decision is based on a square of the channel response.
 9. The wireless communications system of claim 1, wherein performing the hard decision comprises: comparing the in-phase component of the respective one of the demodulated symbols to integer multiples of a square of the channel response; and comparing the quadrature component of the respective one of the demodulated symbols to integer multiplies of the square of the channel response.
 10. A method comprising: receiving a sequence of symbols through a channel, wherein (i) the sequence of symbols comprise bits of user data, and (ii) the bits of user data are mapped to the sequence of symbols prior to being received; generating a sequence of demodulated symbols by multiplying the sequence of symbols by a conjugate of a channel response of the channel; generating an in-phase component and a quadrature component of each of the demodulated symbols; for each respective one of the demodulated symbols, generating a decoded symbol by performing a hard decision based on the in-phase component and the quadrature component of the respective one of the demodulated symbols; and determining which of the bits of user data are associated with each of the decoded symbols.
 11. The method of claim 10, wherein the bits of user data of the sequence of symbols are mapped based on quadrature phase shift keying.
 12. The method of claim 10, wherein the bits of user data of the sequence of symbols are mapped based on 16-quadrature amplitude modulation.
 13. The method of claim 10, wherein the bits of user data of the sequence of symbols are mapped based on 64-quadrature amplitude modulation.
 14. The method of claim 10, wherein the bits of user data of the sequence of symbols are mapped based on 256-quadrature amplitude modulation. 